package com.group4.datafactorybackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.group4.datafactorybackend.common.R;
import com.group4.datafactorybackend.entity.DO.ApiDO;
import com.group4.datafactorybackend.entity.DTO.*;

/**
 * @author 邹代鑫
 * @date 2022/8/1
 * @description 接口管理业务逻辑接口层
*/
public interface ApiService extends IService<ApiDO> {

    /**
     * @author 李泓静
     * @param apiCode 接口编号
     * @return R
     * @description 查看接口详情
     */
    R<?> getApiDetail(String apiCode);

    /**
     * @author 邹代鑫
     * @param createOrUpdateApiDTO 新增、修改接口接收参数实体类
     * @return R
     * @description 新增接口
     */
    R<?> createOrUpdateApi(CreateOrUpdateApiDTO createOrUpdateApiDTO);

    /**
     * @author 卑微小峰
     * @param batchReleaseOrOutageDTO （批量）发布/停用接收参数实体类
     * @return R
     * @description (批量)发布/停用接口
     */
    R<?> releaseOrOutage(BatchReleaseOrOutageDTO batchReleaseOrOutageDTO);

    /**
     * @author 卑微小峰
     * @param batchClassifyDTO 批量分类接收参数实体类
     * @return R
     * @description 接口批量分类
     */
    R<?> batchClassify(BatchClassifyDTO batchClassifyDTO);

    /**
     * @author 章珑赢
     * @param parameterDTO 查询接口列表参数条件实体类
     * @return R
     * @description 根据接口来源，api状态，接口名称查询接口列表
     **/
    R<?> selectApiListBy(ApiParameterDTO parameterDTO);

    /**
     * @author 邹代鑫
     * @param apiTestDTO 接收测试数据实体类
     * @return R
     * @description 测试接口
     */
    R<?> apiTest(ApiTestDTO apiTestDTO);

    /**
     * @author 卑微小峰
     * @param apiCode 接口编号
     * @return R
     * @description 删除未发布接口
     */
    R<?> deleteApi(String apiCode);

    /**
     * @author 卑微小峰
     * @param createOrUpdateApiDTO 需要校验的数据
     * @return R
     * @description 新增/编辑接口数据校验接口
     */
    R<?> verifyApiData(CreateOrUpdateApiDTO createOrUpdateApiDTO);
}
